package B3;

import java.util.List;

/**
 * 字符串提取状态机测试类
 * 覆盖核心场景：单字符串（含转义）、多字符串、无有效字符串、转义符在末尾等
 */
public class StringExtractorStateMachineTest {
    public static void main(String[] args) {
        // 初始化状态机
        StringExtractorStateMachine extractor = new StringExtractorStateMachine();

        // 测试场景1：含转义双引号的单字符串（核心场景）
        System.out.println("=== 测试场景1：含转义双引号的单字符串 ===");
        String test1 = "\"一般学习一门编程语言的时候，基本上第一个程序是输出\\\"Hello World!\\\"\"";
        List<String> result1 = extractor.extractStrings(test1);
        System.out.println("原始文本：" + test1);
        System.out.println("提取结果：" + result1);
        // 预期输出：[一般学习一门编程语言的时候，基本上第一个程序是输出"Hello World!"]

        // 测试场景2：多个字符串（无转义）
        System.out.println("\n=== 测试场景2：多个独立字符串 ===");
        String test2 = "\"Java\"\"Python\"\"C++\"";
        List<String> result2 = extractor.extractStrings(test2);
        System.out.println("原始文本：" + test2);
        System.out.println("提取结果：" + result2);
        // 预期输出：[Java, Python, C++]

        // 测试场景3：无有效字符串（无双引号）
        System.out.println("\n=== 测试场景3：无有效字符串 ===");
        String test3 = "这是一段普通文本，没有双引号包裹的字符串";
        List<String> result3 = extractor.extractStrings(test3);
        System.out.println("原始文本：" + test3);
        System.out.println("提取结果：" + result3);
        // 预期输出：[]

        // 测试场景4：转义符在字符串末尾（无后续字符）
        System.out.println("\n=== 测试场景4：转义符在字符串末尾 ===");
        String test4 = "\"转义符在末尾：\\\"";
        List<String> result4 = extractor.extractStrings(test4);
        System.out.println("原始文本：" + test4);
        System.out.println("提取结果：" + result4);
        // 预期输出：[]（无结束双引号，不保存）
    }
}
